Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра БІТ
Звіт
до лабораторної роботи № 2
з дисципліни :
“Програмування комп’ютерної графіки ”
Львів 2012
Мета: Знайомство з примітивами OPENGL, призначеними для виведення крапок, ліній і багатокутників. Визначення кольору об'єктів. Різні способи замальовування об'єктів.
КОРОТКІ ТЕОРЕТИЧНІ ДАНІ
Для виконання роботи необхідно мати уявлення про основні принципи формування зображення на екрані ([7] – лекція 17), про моделювання об'єктів на плоскості ([7] – лекції 7, 8, 10); знати особливості представлення кольору в колірній моделі RGB ([7] – лекція 4); розуміти сенс терміну «антиелайзінг» ([7] – лекція 6).
Область виводу в OPENGL задається командою
glViewPort(0, 0, ClientWidth, ClientHeight)
де перші два параметри задають положення лівого верхнього кута вікна виводу, параметри ClientWidth, ClientHeight визначають розмір вікна в екранних координатах. Центр отриманої області виводу має координати (0, 0). Координати змінюються в діапазоні [-1; 1] по кожній осі.
Якщо при установці формату піксела був встановлений режим подвійної буферизації (прапор PFD_DOUBLEBUFFER), то зображення готується у позаекранному буфері, і необхідно забезпечити перезапис вмісту позаекранного буфера в основний. Зробити це можна командою
BOOL SwapBuffers(HDC hdc);
Всі зображення будуються з окремих примітивів, які описуються за допомогою набору вершин (Vertex). Примітивами OpenGl є крапки (одиночні вершини), лінії (пари вершин), трикутники (три вершини), чотирикутники (чотири вершини) і полігони (3 і більш за вершини).
Командні дужки. Використання функцій glBegin і glEnd.
Команди малювання полягають між командними дужками glBegin і glEnd. Командними дужками бібліотеки OpenGl є спеціальні функції (що не мають ніякого відношення до операторних дужок мов програмування). Помилка при використанні командних дужок не розпізнається компілятором, але може привести до непередбачуваних результатів роботи програми.
Усередині командних дужок можуть знаходитися будь-які оператори мови і багато функцій OPENGL. Головне призначення командних дужок – завдання режиму (примітиву) для команд glVertex (вершина), що визначають координати вершин для малювання примітивів OPENGL.
Команди, що встановлюють розмір крапки, товщину і типа лінії, включення і відключення режиму згладжування (антиелайзінг) повинні стояти поза командними дужками.
Колір окремих вершин або примітивів може встановлюватися як поза командними дужками, так і усередині них. Для установки кольору використовується команда
glColor3f(0.3f, 0.5f, 0.1f)
де колір формується як сума компонент червоного, зеленого і синього кольорів у вказаній пропорції. Значення компонент задаються у вигляді дійсних чисел в інтервалі [0; 1].
Компоненти кольору можуть бути задані і в цілочисельній формі, граничним значенням в цьому випадку буде максимальне 8-бітове ціле без знаку, наприклад, білий колір буде записаний таким чином:
glColor3i(214748647, 214748647, 214748647).
Проте переважно використовувати команду в речовій формі, оскільки OPENGL зберігає дані саме в речовому форматі.
Цифра 3 в назві команди означає число аргументів команди.
Аргументи функції glBegin.
Аргументами функції glBegin можуть бути стандартні константи OpenGl, що визначають примітиви бібліотеки: GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON. У програмі імена констант мають бути записані саме так як це зроблено тут (все у верхньому регістрі).
Хід роботи:
Використовуючи програму-шаблон, створену при виконанні попередньої лабораторної роботи виконайте наступні завдання.
Завдання 1. Побудувати крапки розташовані у вершинах правильного n-кутника. Встановити режим згладжування для крапок. Експериментально визнач...